{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "from sklearn import preprocessing\n",
    "import pickle\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>Gender</th>\n",
       "      <th>City</th>\n",
       "      <th>Monthly_Income</th>\n",
       "      <th>DOB</th>\n",
       "      <th>Lead_Creation_Date</th>\n",
       "      <th>Loan_Amount_Applied</th>\n",
       "      <th>Loan_Tenure_Applied</th>\n",
       "      <th>Existing_EMI</th>\n",
       "      <th>Employer_Name</th>\n",
       "      <th>...</th>\n",
       "      <th>Interest_Rate</th>\n",
       "      <th>Processing_Fee</th>\n",
       "      <th>EMI_Loan_Submitted</th>\n",
       "      <th>Filled_Form</th>\n",
       "      <th>Device_Type</th>\n",
       "      <th>Var2</th>\n",
       "      <th>Source</th>\n",
       "      <th>Var4</th>\n",
       "      <th>LoggedIn</th>\n",
       "      <th>Disbursed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ID000002C20</td>\n",
       "      <td>Female</td>\n",
       "      <td>Delhi</td>\n",
       "      <td>20000</td>\n",
       "      <td>23-May-78</td>\n",
       "      <td>15-May-15</td>\n",
       "      <td>300000.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>CYBOSOL</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>N</td>\n",
       "      <td>Web-browser</td>\n",
       "      <td>G</td>\n",
       "      <td>S122</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ID000004E40</td>\n",
       "      <td>Male</td>\n",
       "      <td>Mumbai</td>\n",
       "      <td>35000</td>\n",
       "      <td>07-Oct-85</td>\n",
       "      <td>04-May-15</td>\n",
       "      <td>200000.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>TATA CONSULTANCY SERVICES LTD (TCS)</td>\n",
       "      <td>...</td>\n",
       "      <td>13.25</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6762.9</td>\n",
       "      <td>N</td>\n",
       "      <td>Web-browser</td>\n",
       "      <td>G</td>\n",
       "      <td>S122</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ID000007H20</td>\n",
       "      <td>Male</td>\n",
       "      <td>Panchkula</td>\n",
       "      <td>22500</td>\n",
       "      <td>10-Oct-81</td>\n",
       "      <td>19-May-15</td>\n",
       "      <td>600000.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALCHEMIST HOSPITALS LTD</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>N</td>\n",
       "      <td>Web-browser</td>\n",
       "      <td>B</td>\n",
       "      <td>S143</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ID000008I30</td>\n",
       "      <td>Male</td>\n",
       "      <td>Saharsa</td>\n",
       "      <td>35000</td>\n",
       "      <td>30-Nov-87</td>\n",
       "      <td>09-May-15</td>\n",
       "      <td>1000000.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>BIHAR GOVERNMENT</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>N</td>\n",
       "      <td>Web-browser</td>\n",
       "      <td>B</td>\n",
       "      <td>S143</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ID000009J40</td>\n",
       "      <td>Male</td>\n",
       "      <td>Bengaluru</td>\n",
       "      <td>100000</td>\n",
       "      <td>17-Feb-84</td>\n",
       "      <td>20-May-15</td>\n",
       "      <td>500000.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>25000.0</td>\n",
       "      <td>GLOBAL EDGE SOFTWARE</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>N</td>\n",
       "      <td>Web-browser</td>\n",
       "      <td>B</td>\n",
       "      <td>S134</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            ID  Gender       City  Monthly_Income        DOB  \\\n",
       "0  ID000002C20  Female      Delhi           20000  23-May-78   \n",
       "1  ID000004E40    Male     Mumbai           35000  07-Oct-85   \n",
       "2  ID000007H20    Male  Panchkula           22500  10-Oct-81   \n",
       "3  ID000008I30    Male    Saharsa           35000  30-Nov-87   \n",
       "4  ID000009J40    Male  Bengaluru          100000  17-Feb-84   \n",
       "\n",
       "  Lead_Creation_Date  Loan_Amount_Applied  Loan_Tenure_Applied  Existing_EMI  \\\n",
       "0          15-May-15             300000.0                  5.0           0.0   \n",
       "1          04-May-15             200000.0                  2.0           0.0   \n",
       "2          19-May-15             600000.0                  4.0           0.0   \n",
       "3          09-May-15            1000000.0                  5.0           0.0   \n",
       "4          20-May-15             500000.0                  2.0       25000.0   \n",
       "\n",
       "                         Employer_Name  ... Interest_Rate Processing_Fee  \\\n",
       "0                              CYBOSOL  ...           NaN            NaN   \n",
       "1  TATA CONSULTANCY SERVICES LTD (TCS)  ...         13.25            NaN   \n",
       "2              ALCHEMIST HOSPITALS LTD  ...           NaN            NaN   \n",
       "3                     BIHAR GOVERNMENT  ...           NaN            NaN   \n",
       "4                 GLOBAL EDGE SOFTWARE  ...           NaN            NaN   \n",
       "\n",
       "  EMI_Loan_Submitted Filled_Form  Device_Type  Var2  Source  Var4 LoggedIn  \\\n",
       "0                NaN           N  Web-browser     G    S122     1        0   \n",
       "1             6762.9           N  Web-browser     G    S122     3        0   \n",
       "2                NaN           N  Web-browser     B    S143     1        0   \n",
       "3                NaN           N  Web-browser     B    S143     3        0   \n",
       "4                NaN           N  Web-browser     B    S134     3        1   \n",
       "\n",
       "  Disbursed  \n",
       "0         0  \n",
       "1         0  \n",
       "2         0  \n",
       "3         0  \n",
       "4         0  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "date_type={'ID': np.object,'Gender': np.object,'City': np.object,'Monthly_Income':np.int64,'DOB':np.object\n",
    "          ,'Lead_Creation_Date': np.object,'Loan_Amount_Applied': np.float64,'Loan_Tenure_Applied': np.float64\n",
    "          ,'Existing_EMI':np.float64,'Employer_Name':np.object,'Salary_Account':np.object,'Mobile_Verified':np.object\n",
    "          ,'Var5':np.object,'Var1':np.object,'Loan_Amount_Submitted':np.float64,'Loan_Tenure_Submitted':np.float64\n",
    "          ,'Interest_Rate':np.float64,'Processing_Fee':np.float64,'EMI_Loan_Submitted':np.object,'Filled_Form':np.object\n",
    "          ,'Device_Type':np.object,'Var2':np.object,'Source':np.object,'Var4':np.int64,'LoggedIn':np.int64,'Disbursed':np.object}\n",
    "\n",
    "train = pd.read_csv(\"Train.csv\",dtype=date_type)\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 87020 entries, 0 to 87019\n",
      "Data columns (total 26 columns):\n",
      "ID                       87020 non-null object\n",
      "Gender                   87020 non-null object\n",
      "City                     86017 non-null object\n",
      "Monthly_Income           87020 non-null int64\n",
      "DOB                      87020 non-null object\n",
      "Lead_Creation_Date       87020 non-null object\n",
      "Loan_Amount_Applied      86949 non-null float64\n",
      "Loan_Tenure_Applied      86949 non-null float64\n",
      "Existing_EMI             86949 non-null float64\n",
      "Employer_Name            86949 non-null object\n",
      "Salary_Account           75256 non-null object\n",
      "Mobile_Verified          87020 non-null object\n",
      "Var5                     87020 non-null object\n",
      "Var1                     87019 non-null object\n",
      "Loan_Amount_Submitted    52407 non-null float64\n",
      "Loan_Tenure_Submitted    52407 non-null float64\n",
      "Interest_Rate            27726 non-null float64\n",
      "Processing_Fee           27420 non-null float64\n",
      "EMI_Loan_Submitted       27727 non-null object\n",
      "Filled_Form              87020 non-null object\n",
      "Device_Type              87020 non-null object\n",
      "Var2                     87020 non-null object\n",
      "Source                   87020 non-null object\n",
      "Var4                     87020 non-null int64\n",
      "LoggedIn                 87020 non-null int64\n",
      "Disbursed                87019 non-null object\n",
      "dtypes: float64(7), int64(3), object(16)\n",
      "memory usage: 17.3+ MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有非数值型特征，需数值化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of occurrences')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Target 分布，看看各类样本分布是否均衡\n",
    "plt.subplot(1,3,1)      # 分成一行三列，起始点为1\n",
    "sns.countplot(train.Disbursed)\n",
    "plt.xlabel('Disbursed')\n",
    "plt.ylabel('Number of occurrences')\n",
    "\n",
    "plt.subplot(1,3,3)\n",
    "sns.countplot(train.LoggedIn);\n",
    "plt.xlabel('LoggedIn');\n",
    "plt.ylabel('Number of occurrences')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本非常不均衡。交叉验证对分类任务缺省的是采用StratifiedKFold，在每折采样时根据各类样本按比例采样"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##各特征的分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of occurrences')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(1,4,1)\n",
    "sns.countplot(train.Gender)\n",
    "plt.xlabel('Gender')\n",
    "plt.ylabel('Number of occurrences')\n",
    "\n",
    "plt.subplot(1,4,2)\n",
    "sns.countplot(train.Mobile_Verified)\n",
    "plt.xlabel('Mobile_Verified')\n",
    "plt.ylabel('Number of occurrences')\n",
    "\n",
    "plt.subplot(1,4,3)\n",
    "sns.countplot(train.Filled_Form)\n",
    "plt.xlabel('Filled_Form');\n",
    "plt.ylabel('Number of occurrences')\n",
    "\n",
    "plt.subplot(1,4,4)\n",
    "sns.countplot(train.Device_Type)\n",
    "plt.xlabel('Device_Type')\n",
    "plt.ylabel('Number of occurrences')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Gender - 性别 ，Mobile_Verified - 是否移动验证（Y / N），Filled_Form - 后期报价后是否已填写申请表格 ，Device_Type - 进行申请的设备（浏览器/移动设备） 只有2个类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of occurrences')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.City)\n",
    "plt.xlabel('City')\n",
    "plt.ylabel('Number of occurrences')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "城市特征值很多，但是分布比较集中"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of occurrences')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZYAAAEKCAYAAAAxXHOuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XmcFNW1wPHfYRBUFlkEQliCKMrigjCCvvhkU0RQkUWEGEElwahEfDF5gksAcYFEo2hQoxFFgiAiCRNFCYLoixEFZccFBBRwRASGfZnlvD/u7ZmapmemZ6YXejjfz6c/U3VrO9VTXbfq1q17RVUxxhhjYqVSsgMwxhhTsVjGYowxJqYsYzHGGBNTlrEYY4yJKctYjDHGxJRlLMYYY2LKMhZjjDExZRmLMcaYmLKMxZgyEpE0EVkmIm/48dNE5CMRWS8ir4pIFZ9e1Y+v99ObBdYxyqd/ISKXB9J7+LT1IjIy0ftmTHnI8fbm/amnnqrNmjVLdhimAti2bRv79+8nLy+PM844gw0bNrBr1669qlpTRJ4FVqjqMyJyG3Cuqv5KRAYCfVT1OhFpDUwHOgA/Bt4BzvSr/xK4DNgCLAEGqeraomKx49rE0yeffPKDqtaLegFVjcsHOBH4GFgBrAHG+vTTgI+A9cCrQBWfXtWPr/fTmwXWNcqnfwFcHkjv4dPWAyOjiat9+/ZqTHlt3rxZu3btqgsWLNBevXppXl6e1q1bV4Gl6o7Ni4B5fngecJEfrgz8AIg/rkdpwfE8zy+Xv6wWHP/580X62HFt4il0XEf7iWdR2GGgq6qeB7QFeojIhcAE4HFVPQPYBQz18w8Fdvn0x/18+Ku6gUAbXEbytC+CSAMmAVcArYFBfl5j4u7OO+/kD3/4A5UquZ/Qjh07qFWrVnCWLUAjP9wI2AygqjnAbqBuMD1smaLSjUkJcctYfEa3z4+e4D8KdAVm+fQpwDV+uLcfx0/vJiLi02eo6mFV3Yi7O+ngP+tVdYOqHgFm+HmNias33niD+vXr0759+6TGISLDRGSpiCzdvn17UmMxJqhyPFfu7yo+Ac7A3V18BWT5qzYo5qpORIJXdYsDqw0uE35V17GIOIYBwwCaNm1avp0yx70PPviAjIwM5s6dy6FDh9izZw8jRowgKysrOFtjYKsf3go0AbaISGXgFGBHID3SMkWl51PV54DnANLT04+vh6XmmBbXWmGqmquqbXE/jA5Ay3hur5g4nlPVdFVNr1cv+udPxkTyyCOPsGXLFjZt2sSMGTPo2rUr06ZNo0uXLgC1/WxDgDl+OMOPA/QHFvpy6wxgoK81dhrQAvdccgnQwtcyq4IrCs5IzN4ZU34JqW6sqlnAu7iHkrX8VRtEvqojyqu64q72jEm4CRMmAPxIRNbj7rZf8JNeAOr69N8AIwFUdQ0wE1gLvA3c7i/GcoDhuIf5nwEz/bzGpIS4VTcWkXpAtqpmichJwL9wD+SHAK+r6gxfJXOlqj4tIrcD52hBlcy+qjpARNoAr1BQJXMB7spOcFUyu+EylCXAz0r6Aaanp+vSpUvjss/GiMgnqpqe6O3acW3iqbTHdTyfsTQEpvjnLJVwV11viMhaYIaIPAgso/BV3VR/VbcTd/uPqq4RkdBVXQ7+qg5AREJXdWnAZLuqM8aY5ItbxqKqK4HzI6RvwN19hKcfAq4tYl0PAQ9FSJ8LzC13sMYYY2LGmnQxxhgTU3Gtbnwsytm+k+3P/C3itHq3/jzB0RgTO+HHtR3PJlnsjsUYY0xMWcZijDEmpixjMcYYE1OWsRhjjIkpy1iMMcbElGUsxhhjYsoyFmOMMTFlGYsxxpiYsozFGGNMTFnGYowxJqYsYzHGGBNTlrEYY4yJKctYjDHGxJRlLMYYY2LKMhZjSunQoUN06NCB8847jzZt2jB69GgAbrzxRoBzRGS5/7QFEOdJEVkvIitFpF1oXSIyRETW+c+QQHp7EVnll3lSRCSxe2lM2R13/bEYU15Vq1Zl4cKFVK9enezsbC6++GKuuOKK0OQtqto2bJErgBb+0xF4BugoInWA0UA6oMAnIpKhqrv8PL8EPsL1ktoDeCve+2ZMLNgdizGlJCJUr14dgOzsbLKzsynhhqI38LI6i4FaItIQuByYr6o7fWYyH+jhp9VU1cWqqsDLwDXx3CdjYskyFmPKIDc3l7Zt21K/fn0uu+wyOnbsGJrUyBd3PS4iVUNpwObA4lt8WnHpWyKkG5MSLGMxpgzS0tJYvnw5W7Zs4eOPP2b16tU88sgjAKuBC4A6wN3xjEFEhonIUhFZun379nhuyphSsYzFmHKoVasWXbp04e2336Zhw4YAqOph4EWgg59tK9AksFhjn1ZceuMI6YWo6nOqmq6q6fXq1YvRHhlTfpaxGFNK27dvJysrC4CDBw8yf/58WrZsSWZmJuBqgeGeiaz2i2QAg33tsAuB3aqaCcwDuotIbRGpDXQH5vlpe0TkQr+uwcCcRO6jMeVhtcKMKaXMzEyGDBlCbm4ueXl5DBgwgCuvvJKuXbsCtAZWAcuBX/lF5gI9gfXAAeAmAFXdKSLjgCV+vgdUdacfvg14CTgJVxvMaoSZlGEZizGldO6557Js2bKj0hcuXIiIrFXV9GC6r9l1e6R1qepkYHKE9KXA2bGJ2JjEsqIwY4wxMRW3jEVEmojIuyKyVkTWiMgInz5GRLYG3k7uGVhmlH/T+AsRuTyQ3sOnrReRkYH000TkI5/+qohUidf+GGOMiU4871hygLtUtTVwIXC7iLT20x5X1bb+MxfATxsItMG9Zfy0iKSJSBowCff2cmtgUGA9E/y6zgB2AUPjuD/GGGOiELeMRVUzVfVTP7wX+IziX/LqDcxQ1cOquhH3oLOD/6xX1Q2qegSYAfT2tWW6ArP88lOwt5ONMSbpEvKMRUSaAefj2j0CGO7fTp7sq1lC6d9OrgtkqWpOWLoxxpgkinvGIiLVgdeBO1V1D65xvdOBtkAm8FgCYsh/Q3nHvj3x3pwxxhzX4pqxiMgJuExlmqrOBlDVbaqaq6p5wPOU/e3kHbjG/CqHpR8l+IZy3eo1Y7NzxhhjIopnrTABXgA+U9U/BdIbBmbrQ+G3kweKSFUROQ3XxPjHuJfHWvgaYFVwD/gz/LsB7wL9/fJDsLeTjTEm6eL5guRPgRuAVSKy3Kfdg6vV1RbX/8Qm4BYAVV0jIjOBtbgaZberai6AiAzHNX+RBkxW1TV+fXcDM0TkQWAZLiMzxhiTRHHLWFT130CkTirmFrPMQ8BDEdLnRlpOVTdQUJRmjDHmGGBv3htjjIkpy1iMMcbElGUsxhhjYsoyFmOMMTFlGYsxxpiYsozFGGNMTFnGYowxJqZKzFhEpJqIVPLDZ4rI1b6pFmNS2v79+8nLywPgyy+/JCMjg+zs7CRHZUzqi+aO5X3gRBFpBPwL9zb9S/EMyphEuOSSSzh06BBbt26le/fuTJ06lRtvvLHE5Q4dOkSHDh0477zzaNOmDaNHjwZg48aNAC3DO57zzRS96tM/8q1946eVqnM7Y1JBNBmLqOoBoC/wtKpei+uMy5iUpqqcfPLJzJ49m9tuu43XXnuNNWvWlLhc1apVWbhwIStWrGD58uW8/fbbLF68mLvvvhtgW4SO54YCu3z647gO6srauZ0xx7yoMhYRuQi4HnjTp6XFLyRjEkNV+fDDD5k2bRq9evUCIDc3t8TlRITq1asDkJ2dTXZ2NiLCwoULwWUoULjjud5+HFzHdN18I62l6tyu3DtsTIJEk7HcCYwC/u4bimyOa1XYmJT2xBNP8Mgjj9CnTx/atGnDhg0b6NKlS1TL5ubm0rZtW+rXr89ll13G6aefTq1atYKzBDuey++szndMtxvXUV1pO7czJiWU2Ailqr4HvCciJ/vxDcAd8Q7MmHjr1KkTnTp14sCBAwA0b96cJ598Mqpl09LSWL58OVlZWfTp04fPP/88nqFGJCLDgGEATZs2Lde6vvxzwQ3RmcOt9wlTPtHUCrtIRNYCn/vx80Tk6bhHZkycffjhh7Ru3ZqWLVsCsGLFCm677bZSraNWrVp06dKFDz/8kKysrOCkYMdz+Z3V+Y7pTsF1VFfazu0KCXZgV69evVLFbUw8RVMU9gRwOe6HgKquAC6JZ1DGJMKdd97JvHnzqFu3LgDnnXce77//fonLbd++PT8TOXjwIPPnz6dVq1ahYrTafrZgx3MZfhxcx3QLfUd1percrtw7bEyCRNUfi6puds8a85X8hNOYFNCkSZNC42lpJddLyczMZMiQIeTm5pKXl8eAAQO48sorad26NbNmzfqRiKyncMdzLwBTffpOXEZR1s7tjDnmRZOxbBaR/wLUvxg5AvgsvmEZE39NmjThP//5DyJCdnY2EydOpFWrViUud+6557Js2bKj0ps3bw6uK+70YLqqHgKujbSu0nZuZ0wqiKYo7FfA7bhaKVuBtn7cmJT27LPPMmnSJLZu3UqjRo1Yvnw5kyZNSnZYxqS8aGqF/YB7h8WYCuXUU09l2rRpyQ7DmAonmlphU0SkVmC8tohMjm9YxsTfkCFDCtXk2rVrFzfffHMSIzKmYoimKOxcVc3/9anqLuD8+IVkTGKsXLmy0EuNtWvXjvjsxBhTOtFkLJVEJFSFEhGpQ5S1yYw5luXl5bFr16788Z07d5KTk5PEiIypGKLJIB4DPhSR1wDB1cM/qhaLManmrrvu4qKLLuLaa69FVZk1axb33ntvssMyJuVF8/D+ZRH5BAg1otRXVdfGNyxj4m/w4MG0b9+ed991Td/Nnj2b1q2tEWFjyivaIq3Pca22VgYQkaaq+k3cojImQVq2bEnt2rXzi8C++eabcre7ZczxrsSMRUR+DYwGtuHeuBdAgXPjG5ox8fXUU08xduxYGjRoQFpaGqqKiLBy5cpkh2ZMSovmjmUEcJaq7oh3MMYk0sSJE/niiy/y2wozxsRGNLXCNuP6jygVEWkiIu+KyFoRWSMiI3x6HRGZLyLr/N/aPl1E5EnfFetKEWkXWNcQP/86ERkSSG8vIqv8Mk9KWINmxhSnSZMmnHLKKckOw5gKJ5o7lg3AIhF5EzgcSlTVP5WwXA5wl6p+KiI1gE9EZD5wI7BAVcf7vrxHAnfjumFt4T8dgWeAjr5682ggHVcE94mIZPj3aZ4Bfgl8hGtXqQfwVlR7bo57zZs3p3PnzvTq1YuqVavmp//mN79JYlTGpL5oMpZv/KeK/0RFVTOBTD+8V0Q+w7U31hvo7GebAizCZSy9gZd9c+KLRaSWiDT0885X1Z0APnPqISKLgJqqutinv4zrCtYyFhOVpk2b0rRpU44cOcKRI0eSHY4xFUY01Y3HAojIyap6oCwbEZFmuLf1PwIa+EwH4DuggR8ubTetjfxweHqk7ef3tNe4jpWnG2f06NEAHDhwgJNPPjnJ0RhTccS9B0kRqQ68DtypqnuC0/zdiZYu5NIL9rRXt3rNeG/OpIhY9CBpjDlaXHuQ9P23vA5MU9XZPnmbL+LC//3ep5e2m9atfjg83ZiolLUHSWNM8aLJWFDVzWFJJfYg6WtovYDr+Cj4oD/YTWt4962Dfe2wC4HdvshsHtDdt6pcG+gOzPPT9ojIhX5bgwPrMiYqZelB0hhTvHj2IPlT4AZglYgs92n3AOOBmSIyFPgaGOCnzQV6AuuBA8BNAKq6U0TG4foBB3gg9CAfuA14CTgJ99DeHtybqJW1B0ljTPGiyVh+BUykoAfJfxFFD5Kq+m/cW/qRdIswvxa1XlWdDBzVB4yqLgXOLikWYyJ59tlnGTFiRH4Pkt27d4+qB8nNmzczePBgtm3bhogwbNgwRowYwZgxYwDODV5I+S6GEZFRwFDc3f4dqjrPp/fA/b7SgL+q6niffhowA6gLfALcoKpWdc2khGIzFhFJwx3Q1oOkqVByc3OZOnVqmXqQrFy5Mo899hjt2rVj7969tG/fnssuuyw0eZuqtg3OLyKtgYFAG+DHwDsicqafPAm4DFercYl/R2stMAF4XFVniMizuEzpmTLsqjEJV+wzFlXNBX6WoFiMSZi0tDReeeWVMi3bsGFD2rVzDUPUqFGDVq1asXVrsfVGegMzVPWwqm7EFfd28J/1qrrB343MAHr7Z4ZdgVl++Sm4d7SMSQnRPLz/t4j8WUT+W0TahT5xj8yYOLv44osZPnw4//d//8enn36a/ymNTZs2sWzZMjp27BhKqu+bJJoc6CCvtO9o1QWyVDUnLN2YlBDNM5bQbf0DgTTFXVEZk7KWL3ePQn7/+9/np4kICxcujGr5ffv20a9fP5544glq1qzJrbfeytixY1fh7kTG4TrJuznmgRfEmv/irzX1b44lJT1jqQQ8o6ozExSPMQmRl5fHrbfeyoABA0qeOYLs7Gz69evH9ddfT9++fQFo0MA1IqGqeSLyPPCGn72od7EoIn0HUEtEKvu7lojvaKnqc8BzAOnp6XF/0diYaJX0jCUP+N8ExWJMwlSqVIk//OEPZVpWVRk6dCitWrUq1GBlZmZmcLY+wGo/nAEMFJGqvrZXC+BjXBX6FiJymohUwT3gz/A1JN/FdQMOhd/3MuaYF01R2Dsi8lvgVWB/KDHwLokxKenSSy/l0Ucf5brrrqNatWr56XXq1Cl2uQ8++ICpU6dyzjnn0LatKyl++OGHmT59OkBrEVkJbAJuAVDVNSIyE1iLa/X7dl8xBhEZjnsJOA2YrKpr/GbuBmaIyIPAMtzLxsakhGgyluv83+A7Jgo0j304xiTOq6++ClDo3RURYcOGDcUud/HFF+NuKgrr2bMnf/vb39aqanr4NFV9CHgoQvpc3MvB4ekbcM9qjEk50bRufFoiAjEm0TZu3JjsEIypkKLp835wpHRVfTn24RiTOC+/HPkQHjw44iFvjIlSNEVhFwSGT8Q1x/IpYBmLSWlLlizJHz506BALFiygXbt2lrEYU07RFIX9OjguIrVwbwgbk9KeeuqpQuNZWVkMHDgwSdEYU3FE1Wx+mP2APXcxFU61atXsuYsxMRDNM5Z/UtDLYyWgNWAvTJqUd9VVV+Ga5XIvTK5du7bML0waYwpE84zl0cBwDvC1qm4pamZjUsVvf/vb/OHKlSvzk5/8hMaNGxezhDEmGtFkLN8Amap6CEBEThKRZqq6Ka6RGRNnTZs2pWHDhpx44okAHDx4kE2bNtGsWbPkBmZMiovmGctrQF5gPNenGZPSrr32WipVKvgJpKWlce211yYxImMqhmgylsrBnuv8cJX4hWRMYuTk5FClSsGhXKVKFY4csU4ajSmvaDKW7SJydWhERHoDP8QvJGMSo169emRkZOSPz5kzh1NPPTWJERlTMUTb5/00EfmzH98C2BtkJuU9++yzXH/99QwfPhyAxo0bF/k2vjEmetG8IPkVcKGIVPfj++IelTEJcPrpp7N48WL27XOHdPXq1ZMckTEVQ4lFYSLysIjUUtV9qrpPRGr7pryNSWn33HMPWVlZVK9enerVq7Nr1y7uu+++ZIdlTMqL5hnLFaqaFRpR1V1Az/iFZExivPXWW9SqVSt/vHbt2syde1QL9saYUoomY0kTkaqhERE5CahazPzGpITc3FwOHz6cP37w4MFC48aYsonm4f00YIGIvOjHbwKmxC8kYxLj+uuvp1u3btx0000AvPjiiwwZMiTJURmT+qJ5eD9BRFYAl/qkcao6L75hGRN/d999N+eddx7vvPMOAPfffz+XX355kqMyJvVF27rxMuA9YJEfLpGITBaR70VkdSBtjIhsFZHl/tMzMG2UiKwXkS9E5PJAeg+ftl5ERgbSTxORj3z6qyJiL22aUjv//PPp1KkTnTt35vzzz49qmc2bN9OlSxdat25NmzZtmDhxIgA7d+4EaCEi60RkvojUBhDnSX+srhSRdqF1icgQP/86ERkSSG8vIqv8Mk9KqLVMY1JANLXCBgAfA/2BAcBHItI/inW/BPSIkP64qrb1n7l+G62BgUAbv8zTIpImImnAJOAKXKvKg/y8ABP8us4AdgFDo4jJmHwzZ86kQ4cOzJo1i5kzZ9KxY0dmzZpV4nKVK1fmscceY+3atSxevJhJkyaxdu1axo8fD7BXVVsAC4DQhdAVQAv/GQY8AyAidYDRQEdc//ajQ5mRn+eXgeUi/ZaMOSZF84zlXuACVf0eQETqAe8Axf4CVfV9EWkWZRy9gRmqehjYKCLrcT80gPWqusFvewbQW0Q+A7oCP/PzTAHG4H+wxkTjoYceYsmSJdSvXx+A7du3c+mll9K/f/HXTQ0bNqRhw4YA1KhRg1atWrF161bmzJkDsMPPNgV3h3837vh+WVUVWCwitUSkIdAZmK+qOwFEZD7QQ0QWATVVdbFPfxm4BngrVvtuTDxFUxRWKZSpeDuiXK4ow31xwOTA1VkjYHNgni0+raj0ukCWquaEpRsTtby8vPxMBaBu3brk5eUVs8TRNm3axLJly+jYsSPbtm0DyPaTvgMa+OHSHt+N/HB4eiEiMkxElorI0u3bt5cqbmPiKZo7lrdFZB4w3Y9fB5S1sv8zwDhcx2HjgMeAm8u4rqiJyDBcEQSN69SN9+ZMiujRoweXX345gwYNAuDVV1+lZ8/oX9Hat28f/fr144knnqBmzZqFpqmqiogWsWhMqOpzwHMA6enpcd2WMaURTa2w34lIX+Bin/Scqv69LBtT1W2hYRF5HnjDj24FmgRmbezTKCJ9B1BLRCr7u5bg/JG2m/8DbPuT5vYDNAD88Y9/ZPbs2fz73/8GYNiwYfTp0yeqZbOzs+nXrx/XX389ffv2BaBBgwbs3r37BABf1BW60y/q+N6KKw4Lpi/y6Y0jzG9MSojmjgVVnQ3MLu/GRKShqmb60T5AqMZYBvCKiPwJ+DHuYeXHgOBq2ZyG+2ENBH7mrwbfxVUomAEMAeaUNz5z/Onbt29+xhAtVWXo0KG0atWK3/zmN/npV199NY8++mjoljh4TGbgioBn4B7U71bVTF8S8HCgSLg7MEpVd4rIHhG5EPgI1+jrU2XdR2MSLaqMpSxEZDruauxUEdmCq/3SWUTa4orCNgG3AKjqGhGZCazFdX98u6rm+vUMB+YBacBkVV3jN3E3MMO3W7YMeCFe+2JM0AcffMDUqVM555xzaNu2LQAPP/wwI0eO5NFHH60pIuuAr3G1KMEVHfcE1gMHcC8Z4zOQccASP98DoQf5wG24mpUn4R7a24N7kzLilrGo6qAIyUWe/FX1IeChCOlzifBMx9cU6xCebky8XXzxxbgKXhF9qarpwQRfG+z2SDOr6mRgcoT0pcDZ5QzVmKQosnaXiCzwfyckLhxj4q9bt26Ae/PeGBN7xd2xNBSR/wKu9mXDhd78VdVP4xqZMXGSmZnJf/7zHzIyMhg4cOBRdx/t2rUrYkljTDSKy1h+D9yPq5Hyp7BpintB0ZiU88ADDzBu3Di2bNlS6OE7gIiwcOHCJEVmTMVQZMaiqrOAWSJyv6qOS2BMxsRV//796d+/P+PGjeP+++9PdjjGVDjRvMcyTkSuBi7xSYtU9Y3iljEmFdx///1kZGTw/vvvA9C5c2euvPLKJEdlTOqLphHKR4ARuKrAa4ERIvJwvAMzJt5GjRrFxIkTad26Na1bt2bixIncc889yQ7LmJQXTXXjXkBbVc0DEJEpuPdG7BdoUtqbb77J8uXLqVTJXV8NGTKE888/n4cftusmY8oj2sYkawWGT4lHIMYkQ1ZWVv7w7t27kxiJMRVHNHcsjwDLfBMqgnvWMrL4RYw59o0aNYrzzz+fLl26oKq8//77oT5VjDHlEM3D++m+f4gLfNLdqvpdXKMyJgEGDRpE586dWbLEtagyYcIEfvSjHyU5KmNSX7SNUGbiGtIzpkJp2LAhV199dbLDMKZCKU+HXcYYY8xRLGMxxhgTU8VmLCKSJiKfJyoYYxIlNzeXli1bJjsMYyqkYjMW3yfKFyLSNEHxGJMQaWlpnHXWWXzzzTfJDsWYCieah/e1gTUi8jGwP5SoqvbE8zhx5axpEdPf6H99giOJrV27dtGmTRs6dOhAtWrV8tMzMqyeijHlEU3GYq30mQpp3DhrW9WYeIjmPZb3ROQnQAtVfUdETsZ1E2xMSuvUqRNff/0169at49JLL+XAgQPk5uYmOyxjUl40jVD+EpgF/MUnNQL+Ec+gjEmE559/nv79+3PLLbcAsHXrVq655poSl7v55pupX78+Z59d0HPwmDFjaNSoEUBrEVkuIj1D00RklIisF5EvROTyQHoPn7ZeREYG0k8TkY98+qsiUiUmO2xMgkRT3fh24KfAHgBVXQfUj2dQxiTCpEmT+OCDD6hZsyYALVq04Pvvvy9xuRtvvJG33377qPT/+Z//AVirqm1VdS6AiLQGBgJtgB7A0762ZRowCbgCaA0M8vMCTAAeV9UzgF3A0HLtqDEJFk3GclhVj4RGRKQyrgdJY1Ja1apVqVKl4GYgJycHESlmCeeSSy6hTp060W6mNzBDVQ+r6kZgPdDBf9ar6gb/+5oB9BYXQFdcKQHAFKDk2yhjjiHRZCzvicg9wEkichnwGvDP+IZlTPx16tSJhx9+mIMHDzJ//nyuvfZarrrqqjKv789//jO4orDJIlLbJzcCNgdm2+LTikqvC2Spak5Y+lFEZJiILBWRpdu3by9z3MbEWjQZy0hgO7AKuAWYC9wXz6CMSYTx48dTr149zjnnHP7yl7/Qs2dPHnzwwTKt69Zbb+Wrr74C1xleJvBYDEONSFWfU9V0VU2vV69evDdnTNSiqRWW5zv3+ghXBPaFqlpRmEl5lSpVYsiQIXTs2BER4ayzzoqqKCySBg0aBEefB0Ldd28FmgSmNfZpFJG+A6glIpX9XUtwfmNSQjS1wnoBXwFPAn8G1ovIFfEOzJh4e/PNNzn99NO54447GD58OGeccQZvvfVWmdaVmZkZHO0DrPbDGcBAEakqIqcBLYCPgSVAC18DrAruAX+Gv2h7F+jvlx8CzClTUMYkSTQvSD4GdFHV9QAicjrwJlC2X6Axx4i77rqLd999lzPOOAOAr776il69enHFFcVfNw0aNIhFixbxww8/0LhxY8aOHcukDsCQAAAeBElEQVSiRYtYvnw5uBpeXXDFxqjqGhGZiSsiywFu900lISLDgXm498Imq+oav4m7gRki8iCuG/AXYrvnxsRXNBnL3lCm4m0A9sYpHmMSpkaNGvmZCkDz5s2pUaNGictNnz79qLShQ12NYBFZG97ckao+BDwUvoyvkjw3QvoGXK0xY1JSkRmLiPT1g0tFZC4wE/eM5VrcbXyxRGQycCXwvaqe7dPqAK8CzYBNwABV3eWrWE4EegIHgBtV9VO/zBAKKgs8qKpTfHp74CXgJNyPc4Q9+zHRmD17NgDp6en07NmTAQMGICK89tprXHDBBSUsbYwpSXF3LMF6l9uATn54O+5kXpKXcM9kXg6kjQQWqOp4/6bxSNxt/xW4sucWQEfgGaCjz4hGA+m4TO0TEclQ1V1+nl/iKhXMxb18ZsVzpkT//GdBbfkGDRrw3nvvAVCvXj0OHjyYrLCMqTCKzFhU9abyrFhV3xeRZmHJvYHOfngKsAiXsfQGXvZ3HItFpJaINPTzzlfVnQAiMh/oISKLgJqqutinv4x7icwyFlOiF198MdkhGFOhlfiMxddk+TWu+Cp//jI2m99AVUPVZ74DQnU0S/sSWSM/HJ5uTNQ2btzIU089xaZNm8jJyclPt2bzjSmfaB7e/wNXK+WfQF6sNqyqKiIJeSYiIsOAYQCN69RNxCZNCrjmmmsYOnQoV111FZUqWS/dxsRKNBnLIVV9Mkbb2yYiDVU10xd1hVr8K+olsq0UFJ2F0hf59MYR5o9IVZ8DngNo+5Pm9oDfAHDiiSdyxx13JDsMYyqcaC7TJorIaBG5SETahT5l3F4G7oUvKPziVwYwWJwLgd2+yGwe0F1Eavu2l7oD8/y0PSJyoa9RNhh7icyU0ogRIxg7diwffvghn376af7HGFM+0dyxnAPcgGtxNVQUpn68SCIyHXe3caqIbMHV7hoPzBSRocDXwAA/+1xcVeP1uOrGNwGo6k4RGUdB9eYHQg/ygdsoqG78Fvbg3pTSqlWrmDp1KgsXLswvChMRFi5cmOTIjElt0WQs1wLNg03nR0NVBxUxqVuEeRXX70uk9UwGJkdIXwqcffQSxkTntddeY8OGDYWazjfGlF80RWGrgVrxDsSYRDv77LPJyspKdhjGVDjR3LHUAj4XkSXA4VBiGasbG3PMyMrKomXLllxwwQVUrVo1P92qGxtTPtFkLKPjHoUxSTB27Nhkh2BMhRRNfyzvJSIQYxKtU6dOJc9kjCm1aN6830tBH/dVgBOA/apaM56BGRNvNWrUyO/Y68iRI2RnZ1OtWjX27NmT5MiMSW3R3LHktyPu3xnpDVwYz6CMSYS9ewt6f1BV5syZw+LFi5MYkTEVQ6nasVDnH8DlcYrHmKQQEa655hrmzZuX7FCMSXnRFIX1DYxWwjVhfyhuERmTIKF+WQDy8vJYunQpJ554YhIjMqZiiKZWWLBflhxcB1294xKNMQkU7JelcuXKNGvWjDlzSm4Z6Oabb+aNN96gfv36rF7turbfuXMn1113HcDZvnsH68TOHLeiecZSrn5ZjDlWlbVflhtvvJHhw4czePDg/LTx48fTrVs33nnnndXAAqwTO3McK65r4t8Xs5yq6rg4xGNM3D3wwANFThMR7r///mKXv+SSS9i0aVOhtDlz5rBo0SJGjRoF1omdOc4Vd8eyP0JaNWAoUBewjMWkpGrVqh2Vtn//fl544QV27NhRYsYSybZt22jYsGFo1DqxM8e14romfiw0LCI1gBG4VodnAI8VtZwxx7q77rorf3jv3r1MnDiRF198kYEDBxaaVlaJ6sQu2IFd06ZN4705Y6JWbHVjEakjIg8CK3GZUDtVvVtVvy9uOWOOdTt37uS+++7j3HPPJScnh08//ZQJEyZQv379Mq2vQYMGZGa6XrdL0YldUelRdWKnqs+parqqpterV69McRsTD0VmLCLyR1w/KHuBc1R1jH+waExK+93vfscFF1xAjRo1WLVqFWPGjKF27drlWufVV1/NlClTQqPWiZ05rhV3x3IX8GNcdchvRWSP/+wVEWvzwqSsxx57jG+//ZYHH3yQH//4x9SsWZOaNWtSo0YNatYsuaWiQYMGcdFFF/HFF1/QuHFjXnjhBUaOHMn8+fPB9RF0Ka5TO3C1ujbgOrF7HtdBHf6hfagTuyUc3YndX/0yX2EP7k2KKe4ZS6neyjcmVeTl5ZU8UzGmT58eMX3BggWIyGpVvTSUZp3YmeORZR7GGGNiKpo3702MzHqxR8T0/je9neBIjDEmfuyOxRhjTExZxmKMMSamLGMxxhgTU5axGGOMiSnLWIwxxsSUZSzGGGNiyjIWY4wxMWUZizHGmJhKSsYiIptEZJWILBeRpT6tjojMF5F1/m9tny4i8qSIrBeRlSLSLrCeIX7+db6bV2OMMUmWzDuWLqraVlXT/fhIYIGqtqCga1co3LXrMFy3rQS6du0IdABGhzIjY4wxyXMsNenSG9ddK5Sja1cgcguBKeAvUy+PmH7LDfMSHIkxxpRdsu5YFPiXiHzie8EDaOD7ooDyde16FBEZJiJLRWTpjn3W4r8xxsRTsu5YLlbVrSJSH5gvIp8HJ8a6a1dVfQ54DqDtT5rHvctYY4w5niXljkVVt/q/3wN/xz0j2eaLuMrbtasxxpgkSnjGIiLVRKRGaBjXJetqXBeuoZpdZe7aNYG7YowxJoJkFIU1AP7uuvOmMvCKqr4tIkuAmSIyFPgaGODnnwv0xHXTegC4CVzXriIS6toVCnftakyxMv8Q+ea24f9GfExnjCmFhGcsqroBOC9C+g6gW4T0UnftakwSnSMiq4BcIEdV033V+FeBZsAmYICq7hJ3dTURd+F0ALhRVT8F944WcJ9f54OqOiWxu2FM2R1L1Y2NqSi6qOoPgfHQO1rjRWSkH7+bwu9odcS9o9Ux8I5WOq4G5ScikqGquxK1Ax/95cpC4x1veSNRmzYVgDXpYkz89ca9m4X/e00g/WV1FgOhd7Qux7+j5TOT0DtaxqQEy1iMib2EvaNlzLHIisKMia3PVbVdIt7R8hnXMICmTZvGYpXGxIRlLClizMzIzb2MGWA1rI8x2eDe0RKRQu9oqWpmKd7R6hyWvih8Q8EXf9PT0+3FX3PMsIzFpKy3Xv0hYvoV152a4Eic/fv3gy9eDryj9QAF72iN5+h3tIaLyAzcw/vdPvOZBzwcaFS1OzAqUfthTHlZxmJMjGzbtg2gpYiswN7RMscxy1iMiZHmzZsDrA10BQEk9x2t7599stB4/V/dUd5VGlMiqxVmjDEmpuyOpYK4Yk6/iOlv9X49wZEYY453dsdijDEmpuyOJcx3zzwYMf1Ht94XMd0YY0xhlrEYes1+JmL6m31vTXAkxpiKwDKWUvp8Uu+I6S1vnxMx3RhjjjeWsZgKadlfv4+Yfv4v6ic4EmOOP5axmGPWpL9vi5h+e58GEdONMccGqxVmjDEmpuyOxZTL1bP+GTE9o/9VCY7EGHOssIwlhhY93ytieudfvpngSIwxJnksYzFJc93s9RHTX+17RoIjMbH08kuFu3gYfKN17XC8sWcsxhhjYsruWIwxZfb3F3sUGu9z09tJisQcS+yOxRhjTEzZHctxoOffI7d/NrdP/Ns/6/P6vyOm/73fxXHftons20m/LTT+49sfTVIkpqKyOxZjjDExZRmLMcaYmEr5ojAR6QFMBNKAv6rq+CSHZExMHGvH9jt/7Vlo/NJfzE1SJJH1mv1YofE3+94V1XJXznq10Pgb/a+LWUzHq5TOWEQkDZgEXAZsAZaISIaqrk1uZMaUjx3bBa6Y8/NC42/1/luSIjHRSumMBegArFfVDQAiMgPoDRx3Pz6TON//+V8R0+sP7x7LzVSoY/vpvxV+afK2n0d+afKO1wtXX36yn1VfTkWpnrE0AjYHxrcAHZMUizGxVOGP7YdnFM5s7hmYem/o93v9o0Ljr/fryIDXvyiUNrPfWYkM6ZggqprsGMpMRPoDPVT1F378BqCjqg4Pm28YMMyPngUE//OnAj8UsYnipsVzWYvr2Fl3aZf9iarWK2b+qERzbBdzXEeKuaxpsVzXsZR2rMRRnrREbrN0x7WqpuwHuAiYFxgfBYwq5TqWlmVaPJe1uI6ddZc3rrJ+ynNsR4qprGmxXNexlHasxJGK+xDNJ9WrGy8BWojIaSJSBRgIZCQ5JmNiwY5tk7JS+hmLquaIyHBgHq5K5mRVXZPksIwpNzu2TSpL6YwFQFXnAuWpUP9cGafFc9l4rtviStyy5VKOYztSTGVNi+W6jqW0YyWO8qQlK44SpfTDe2OMMceeVH/GYowx5lhTlif+FeED9MBVz1wPjAQmA98DqwPzjANWAsuBrbhqd8HpdYD5wG7gCLA2MO1Vv9xyYBOw3KefCHwMrADWAMsibPdaPy0PmBM+PTDfXYAC28OW/yPwuY/970Atn74JWOVjCq9h8j9+m6uB6cCJYdOP+n4ixJPm9+eNsPRawCwf02fARYFpZwW+p+XAHmBxpG0BvwaygBxgeyB9jP//hNbRMzBthN+nNcDhQHoTH8tOP+2twDo+B54BKvl5M4DBge9gJ/A7v79r/fLLgaU+9mvjcLze67cTOh47Av8EDvtjYFUgLdunHfLzvxeY76D/m+s/ofly/HBoni/9d62BeUKfUFq2Hz8cWFeO/+wPxJHn17k3sGwonv1h21jt/4bWlxthG4f8ug4Hls3z2wttX3G/7eA2D+J+q3lhaTvC9iu0/4cC8+b58X1h+3/Yby+Xwt/vwbB9yPXLZlP4u9sfto1s/wmlbY/wv9kQWE/o+8jEnYOC6wrFFko77D/7cb8zBTb65bcAI/2xFox7j08bAqzznyElHq/JPsEn44M7IXwFNAeq4E7yNwDtKHyCrhkYnog7OQan/wGXKV0CPEngZBe2vceA3/thAar74RNwJ6YhYetthTvhLgJ+GR5X4MQ4D/gO6Bq2fHegsh+eAEzww5uAUyPE18gfYCf58ZnAjWHzXBIpjrB5fgO8wtEZyxTgF364Cj6jK+L/8h0uYw3/X3QB3gG6+WmfBaaNAX4bYX1n405UJ+OeJ+YAZ/hpDYHRwJ+BGriTyx/8tErAv4EufryZ/356Ajfifoih7/cjP+0E/13vjMPxehHwIVDVj58KXOWP2zP9//XMQNoA4BufNhp3IjkT98LlOtzJ9fc+7kx//H2J+03kAD/169pFQQbRBujj1z8Ud7L6CuiHy7wW405OP/PfQ16EOA7gMquv/f4s8cO7cJn6mX49OcC//PxtfSwrcRnFIWA27ve2wm9vMy7jX0dB5puNuxD5Fnjbr+tM4G6/zSM+bRjuYmhlYL/OB/7q43ov8P3+2m8/dLJfCVyN+w2HLhBX+P36xm/7kI/tAdzJfIDf1824C9f9wH9wx9/3uExjNdDa/29C/7OvcJnKpX67W/x6DgAX+3nXAJ1xmcJ3/rtZA/zcz/c1cCFwAe7iaSvuGLjCj6/A/WZy/P/ndz6WOj6uOkBtP1y7uGP2eC0Ky28uQ1WPADOAxrgr0Xyquicw+h3uIAnqDUxR1feBqUDN8A2JiOAOpul+naqq+/zkE/w6d4dt9zNVDb3stiw8Lu9x4H/98rvClv+Xqub40cV+30pSGThJRCrjTsTfhq3z/SLiAEBEGgO9cD/IYPopuEzpBb+eI6qaVcRqugFfqeprEbZ1KzBeVRf4ablR7FMr4CNVPeC/j1ygr48jE/dDQ1X34k4Wp/jlquDuLHf56ZtwDzGvwX3n3wa+3yzcj34McBMuQ4q1hsAPqnrYx/MD7tj5RlW/9PPsDKTNxJ0gd+JOApX8fNVwJ4w9uJPhStyFDriTWug7zcJd2OTgTmYA2/y83+C+K8HdOSnue3wTd9yE2rvRCHFU9vPVwN1Jh+461uIygiYUXG3v9+vZ4vdri08HaI+76PpGVV/xcQvu/1Abd4d8CHehcgLuAjD0Ha3z+xr8bj/z+/CV30ZX3DniMx9jaNlqfvoe/73k+X3e5GOoAkzzy4QyCcFVwMgGDga+k0q4E3slv+5sP+9G3El7rY9/g//uj/h96uP3aZP//4DLhFb6eVv7eSv7+Tb4764S7re1WFWX4C72avjthe5MZwDj/b58gbvDArgcmK+qO1V1F66UpnDbO+FifXWVCh+gP6612ND4Dbgr12YcfWfwEO6qYTVHX0VnBYabAbkRtnUJRxc7peF+lPtwV3dHbdfPtwhID5+Oy9Am+uFNuCusiHcSuKKRn/vhjcCnwCfAsLD5Rvh4tgPTilhXxDj9tFm4H3xnAncsuCvOj4GXcJnkX4FqRaxjMjA80rb89zUWd4ewGPcjCU0b47+HlX4dtX16K9yVeF3cCSBUtBAqMvsm8H/fjctMl+MylFfCYjvBz/8Pjr67DJ309uLeUI718Vrdx/Ul8DTQKSxtD+7KOVLaPbir4Q24E9EA3Ilsm483yx8XweKeh3FXuDkUFJlsAN6ncPHQEeBd3EnoIO7kuMWv83CEOLJxV9Y5Pu1vFJyE9+CK88bjjsO9fjsb/LTQCT1U9LOVgouyvcB1Ph7169uPK7o+5Pc/G/db/gJ34gwVN2X6//cXfp2hIqMP/f97n/8utvjvbbcfP0LBnUueX0dwvzYHpm3A3cXsC3wnz/nthPZrDwUZSC7utx8qYs8JrG+dX0+o2Ez9/q3D3XXs8svn+DgP+7jVb+Mt3N3nDX7abj/9IuAO/x3k+O9uAy7D/S1wX+B4vJ8IJQTBz/F6xxI1Vb1XVZvgrkQGl2EVg/B3K4F15qpqW9ydRAfcbXZURORk3I/091HMey/uIJnmky5W1Xa4W9/bReQSP19tXGZ1GvBjoJqI/DzCKovazpXA96r6SYTJlXEZ8jOqej7uBz8ywjqq4H6UrxWxmcq4W/ELgUeAJv5uENzzkNNxmVgmrugRVf0Ml3H/C1cckoPLNNv67//3uAzjdT/9Tz69vv8OBga2fy7uqu/0sLhuxX2/3+F+2C8UEX+ZqbvDbY8rttmOe37XP5CWBzwfIW0KMBxoiTtJHgSe8nHm4K6ka+C+ry64E3tl3Anmn7hil124k1s13DOkULFTLu7E1ApoivuO83Df5zTcSS8Yxx24k9iXPo7nccebArf47Z7h1z0Sl2Ht8dv9Ky7z24g7WVbFFVFtxl09nwA8izsZDsLdbZ7s97MpBXc6v8AdOz+jINOshCsuaoY7sYfufj7001b5/T/Bx3ySj60SroTibgruxo74eZr74fGBfdjo1zvM7/NN/rtthLsgSvNx/4Arbm2Ju1B4DXcnVcvH1tRvO1TMlePX/71fxyK/ncO4u+utuIzosN+Hz3AXR/j1ZeDuxMcB1+OK5X4CvIG7SGuIuzArleM1Y9mKu+0OaezTijMNd0IO2iYiDf1wPQpuTQHwxUp9cSeCo6grEnoXdwUardNxP8gVIrLJx/4GYe8kiciNwJXA9eovM1R1q//7Pa4oooOf/VJgo6puV9VsXBn2f5Uipp8CV/t4ZgBdRSTUtvkWYIuqhlrrm4XLaMJdAXyqqtuK2MYWYLbflxW4H+epfn+2+cw6dIIN7Req+oKqtlfVS/wyXwbWmea3Ow33gwstk43LaEIZbyXcncLPcXdGdQLrGIIrnuiK+/+X5nuLmt+/Rao6GpdZ9Aul4e4QRoal7ced3D5X1e24k8VJuN/8hbiT4nTc1e5VfpkaFNwNXIW7y2yMOyEtBVr44bdxmcPLuCvxbbiT6z4fx1m4YqHVgTj24I6rpmFxVMX9X/Drro27A+2MO0GO9NtNw11tZ+NOvjX8/C/5ZUP7OgN3R5uLu9v/GHfirUzBM6GP/Pr2+PXvwl2QdKfgofevcCfV8/yyI3GZbw7ujj8bV6zXGZfJid+X0H7V999Z6H/T2M+zmoI7irXqimRD74oc8vswFZdRHsA9Ez0Ld0FxCFiAK1Kb4f+He3DPnkL/p1U+tqm4Iqx3/fdxxM8X+h+e6WNopK6Yu7lPuxT4AHeRcqdf7kRKeb48XjOWqJrLEJEWgdHeuAMzKAN3YgH3j9gTNv1S3IGyJbDOeiJSyw+fhOtvI3y9RVLVVapaX1WbqWoz3An3SgKZmu8g6n+Bq1X1gE+rJiI1QsO4H9Fqv8g3wIUicrK/C+hG4EQbRUyjVLWxj2cgsFBVf+6nfQdsFpFQE6/diNz0+1F3dmH+gfthg8tYK+EbzAtk7uBO8qH9QkTq+79NcSeIV/y4ADfjHrb/KbghP+2nFPxfbgHW+ZPvOOBUEQk1yJeNe47zOe4kV0lETixmP0pNRM4KOxbbArvD0s4Opfl9rQ8sBL4VkRaqehoFxVR7cFfMq3Enw30i0ht3AqmKOxHNxhWP7sVlGFtwmUUV3BXsibiMvbIfvhqXiZyN+98I7q4hFEdt4P1AHC/jMqfXcMWzJ/jh13G1Gmfh7nDa+21UxZ3EQzWbTvGxdPN/lwFb/W+qjt/+G7gMMlTE9KFf52V+eh5wDi6jq+KHwd0hvYfLcBbjjrOzcSfUbNxxmuZj2w/8t/8uf6CgWG+UXzb0v6nkPyfjMoTDuAvTFv67O9F/D1v97/NqH+Nh/7852X824o6xGwJx7/D/i6q4zO4E/53tw10ctfLfdZNAHP39/7a5L3GoijsP9MRdGMzC3XGdgKvM011EavvSje64ikNFi3V5cKp8/BcYqglzrz9YMikoJx6KO8hX425Vt/oDNDi9Lu4KIvQQMn+a38ZLwK/CtnsuBbVQQusO324fP3yYgqqWhdYdWN8+XDFMcPn1uGKC0LOEZ3FXJCsoqOZ8b9h6xuKKDlbjrnaqhk0/6vsp4nvtzNG1wtrirt5W4jKI2mHTq+F+HKcUtS3cD+hvuBNjqFppaNpU3JXaSlxm3zCw7v/DZWQrcFd6ofSLcVfKP/jv6LvA8Bofw0m4E+Mm4EeBuHJxJ5T7cT/GT/36P/LzjI7xsdoeV0QReuA+G3dCDVY7PYg7qWygcJXT3YHjRwPpwSqs4Z/QcuHVbbPD1qN+PcHqsUpBddXg+kJFZ8F4c3An4vB4w9cXXgW3qFjCt5/th4PLHYkwfw5Hfz+7/PEQTAs9k8kOWzZY3Tj0jCY8trwithspPTh/+PQ8Cp6xBNP2R/if5oRtI/R/z6KgenVonq248+B/4X5LhwPTtgAv4s4r64GbSjpm7c17Y4wxMXW8FoUZY4yJE8tYjDHGxJRlLMYYY2LKMhZjjDExZRmLMcaYmLKM5TgjIu+KyOVhaXeKyDOlWMciEflCRJb7T/3YR2pM8UTkXhFZIyIr/XHYMdkxGSfle5A0pTYd9xJj8AWngbgXKovlXxwMNaNyvaoujX14xpRMRC7CvRjcTlUPi8ipuHedyrPOylrQuKgpB7tjOf7MAnr5FgcQkWa49sGWicgCEflURFb5t30RkWb+7uRl3MuTTYpYrzGJdFSLz6r6rYh0E5Fl/hieLCJVAURkk898EJF0EVnkh8eIyFQR+QCYKiJpIvKoiKz2d0K/9vO1F5H3ROQTEZkX1tqDCWMZy3FGVXfi2k8KtXs2ENdkw0Ggj7pGKrsAjwUaeWwBPK2qbVT1a5/2oi9+uD8wnzGJ8i9cQ6RfisjTItLJN6XzEnCdqp6DK5G5NYp1tQYuVdVBuEYimwFtVfVcYJqInIBrvLO/qrbHNc74UMz3qAKxjOX4FCoOw/+djivielhEVuI61GoENPDzfK2qiwPLX+9/uP/tPzckJGpjPI3c4vMtuMZUQw2NTsE3JFqCDFUN9TtzKfCXUJGYvxA7C9fe13wRWQ7cR3R9HB237BnL8WkO8LiItANOVtVPfGvI9YD2qprtWyoONaa4P7iwFrSSvFdEXsG1JvxyooI3BlyLz7hm4heJyCrg9mJmz6HgQjq8kdD9FE+ANap6UVniPB7ZHctxyF/tvYu7pQ+1KHwKrk+VbBHpgmtm/SgiUjlQVn0C7gHq6kjzGhMvRbT4/BXQTETO8Gk34FopBteQaHs/3K+YVc8HbvFdXiAidXCdgNXzFQYQkRNEpE1MdqSCsozl+DUd19dEKGOZBqT7K7/BuJaOI6kKzPNFZstxraI+H+dYjQlXHZgiImv9sdga1+/JTcBr/jjOw7XsDa717okispTiu7X+K67F6pUisgL4mbruy/sDE3zacuLU705FYa0bG2OMiSm7YzHGGBNTlrEYY4yJKctYjDHGxJRlLMYYY2LKMhZjjDExZRmLMcaYmLKMxRhjTExZxmKMMSam/h/mfv8dcpoiDAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(1,2,1)\n",
    "sns.countplot(train.Var5)\n",
    "plt.xlabel('Var5')\n",
    "plt.ylabel('Number of occurrences')\n",
    "\n",
    "plt.subplot(1,2,2)\n",
    "sns.countplot(train.Source)\n",
    "plt.xlabel('Source')\n",
    "plt.ylabel('Number of occurrences')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of occurrences')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(1,3,1)\n",
    "sns.countplot(train.Var1)\n",
    "plt.xlabel('Var1')\n",
    "plt.ylabel('Number of occurrences')\n",
    "\n",
    "plt.subplot(1,3,2)\n",
    "sns.countplot(train.Var2)\n",
    "plt.xlabel('Var2')\n",
    "plt.ylabel('Number of occurrences')\n",
    "\n",
    "plt.subplot(1,3,3)\n",
    "sns.countplot(train.Var4)\n",
    "plt.xlabel('Var4')\n",
    "plt.ylabel('Number of occurrences')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Var5,Var1,Var2,Var4和Source都是有穷离散型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0                                                      4914\n",
       "TATA CONSULTANCY SERVICES LTD (TCS)                     550\n",
       "COGNIZANT TECHNOLOGY SOLUTIONS INDIA PVT LTD            404\n",
       "ACCENTURE SERVICES PVT LTD                              324\n",
       "GOOGLE                                                  301\n",
       "HCL TECHNOLOGIES LTD                                    250\n",
       "ICICI BANK LTD                                          239\n",
       "INDIAN AIR FORCE                                        191\n",
       "INFOSYS TECHNOLOGIES                                    181\n",
       "GENPACT                                                 179\n",
       "IBM CORPORATION                                         173\n",
       "INDIAN ARMY                                             171\n",
       "TYPE SLOWLY FOR AUTO FILL                               162\n",
       "WIPRO TECHNOLOGIES                                      155\n",
       "HDFC BANK LTD                                           148\n",
       "IKYA HUMAN CAPITAL SOLUTIONS LTD                        142\n",
       "STATE GOVERNMENT                                        134\n",
       "INDIAN RAILWAY                                          130\n",
       "INDIAN NAVY                                             128\n",
       "ARMY                                                    126\n",
       "WIPRO BPO                                               116\n",
       "OTHERS                                                  115\n",
       "TECH MAHINDRA LTD                                       113\n",
       "CONVERGYS INDIA SERVICES PVT LTD                        113\n",
       "SERCO BPO PVT LTD                                       108\n",
       "IBM GLOBAL SERVICES INDIA LTD                           104\n",
       "CONCENTRIX DAKSH SERVICES INDIA PVT LTD                  99\n",
       "RANDSTAD INDIA LTD                                       96\n",
       "CAPGEMINI INDIA PVT LTD                                  96\n",
       "ADECCO INDIA PVT LTD                                     95\n",
       "                                                       ... \n",
       "REKHA B M                                                 1\n",
       "KINJAL THAKKAR                                            1\n",
       "AZURE SOFTWARE PVT. LTD                                   1\n",
       "RADHIKA SHARMA                                            1\n",
       "CIDADE DE GOA                                             1\n",
       "LALITRAO                                                  1\n",
       "HIGH SCHOOL TEACHER                                       1\n",
       "MANAGAR INCHRARG OF COMPANY                               1\n",
       "READY MADE GARMENTS                                       1\n",
       "MPSC                                                      1\n",
       "KETHA VENKATESWARA RAO                                    1\n",
       "MANUFACTURING ENGINEER                                    1\n",
       "J P MORGAN CHASE                                          1\n",
       "CHINA STEEL CORPORATIIN INDIA PLT                         1\n",
       "NETHRADHAMA SUPERSPECIALITY EYE HOSPITAL, BANGALORE       1\n",
       "MRESULT SERVICES PVT LTD                                  1\n",
       "J.POOGHUZALI                                              1\n",
       "PRITESH CHARI                                             1\n",
       "BRICKRED TECHNOLOOGIES PVT LTD                            1\n",
       "GANGA SINGH                                               1\n",
       "JSJSJSH                                                   1\n",
       "NLC LTD. NEYVELI                                          1\n",
       "INSOLARE ENERGY PRIVATE LIMITED                           1\n",
       "AMIT SAHU                                                 1\n",
       "MUSHFIQUE SHAIKH                                          1\n",
       "GOVT  MADRASAH                                            1\n",
       "RANGASWAMY M                                              1\n",
       "GC INTL                                                   1\n",
       "W.S. RETAIL PVT. LTD.                                     1\n",
       "INDIC INSTITUTE OF DESIGN AND RES                         1\n",
       "Name: Employer_Name, Length: 43567, dtype: int64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Employer_Name_count=train['Employer_Name'].value_counts().sort_values(ascending = False)\n",
    "Employer_Name_count"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "雇主名就像姓名一样多，绝大部分雇主只出现一次，但也有好多记录共用一个雇主。因而推测与目标直接相关度低（除非是大公司），但是欺诈用户可能会共用一个雇主，所以新增特征表示雇主的相同次数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labelEncoder = preprocessing.LabelEncoder()\n",
    "\n",
    "#新增共用同一雇主个数的特征\n",
    "def count(key,value_counts):\n",
    "    return value_counts[key] if(key in value_counts.keys()) else np.NaN\n",
    "\n",
    "Employer_Name=train['Employer_Name'].fillna(\"unknown\")\n",
    "train['Employer_Name_Count']=Employer_Name.apply(lambda key:count(key,Employer_Name_count))\n",
    "\n",
    "#雇主特征保留（可能喜欢对大公司员工放贷），转换成数值属性\n",
    "Employer_Name_encoder=labelEncoder.fit(Employer_Name)\n",
    "train.Employer_Name=Employer_Name_encoder.transform(Employer_Name)\n",
    "unknown=Employer_Name_encoder.transform(['unknown'])[0]\n",
    "train.Employer_Name=train.Employer_Name.replace(unknown,np.NaN)\n",
    "pickle.dump(Employer_Name_encoder, open(\"Employer_Name_encoder.pkl\", 'wb'))\n",
    "\n",
    "print((train.Employer_Name == unknown).sum())\n",
    "np.isnan(train.Employer_Name).any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7efff8dd6e10>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x=\"Employer_Name_Count\", hue=\"Disbursed\",data=train) #共用雇主数与目标的关系"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "#性别类别属性转换成离数值属性\n",
    "genderEncoder=labelEncoder.fit(train.Gender)\n",
    "train.Gender=genderEncoder.transform(train.Gender)\n",
    "pickle.dump(genderEncoder, open(\"genderEncoder.pkl\", 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#城市类别属性转换成数值属性\n",
    "City=train['City'].fillna(\"unknown\").values.tolist()\n",
    "city_encoder=labelEncoder.fit(City)\n",
    "train['City']=city_encoder.transform(City)\n",
    "unknown=city_encoder.transform(['unknown'])[0]\n",
    "train['City']=train['City'].replace(unknown,np.NaN)\n",
    "pickle.dump(city_encoder, open(\"city_encoder.pkl\", 'wb'))\n",
    "\n",
    "print((train['City'] == unknown).sum())\n",
    "np.isnan(train['City']).any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "#出生日期不重要,重要的是年龄(单位是天)\n",
    "\n",
    "def to_datetime(start,end):\n",
    "    return pd.to_datetime(end)-pd.to_datetime(start)\n",
    "\n",
    "train['age'] = train.apply(lambda row: to_datetime(row['DOB'], row['Lead_Creation_Date']).days, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#工资卡类别属性转换成数值属性\n",
    "Salary_Account=train['Salary_Account'].fillna(\"unknown\")\n",
    "Salary_Account_encoder=labelEncoder.fit(Salary_Account)\n",
    "train['Salary_Account']=Salary_Account_encoder.transform(Salary_Account)\n",
    "unknown=Salary_Account_encoder.transform(['unknown'])[0]\n",
    "train['Salary_Account']=train['Salary_Account'].replace(unknown,np.NaN)\n",
    "pickle.dump(Salary_Account_encoder, open(\"Salary_Account_encoder.pkl\", 'wb'))\n",
    "\n",
    "print((train['Salary_Account'] == unknown).sum())\n",
    "np.isnan(train['Salary_Account']).any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "#手机验证类别属性转换成数值属性\n",
    "mobile_verified_encoder=labelEncoder.fit(train.Mobile_Verified)\n",
    "train.Mobile_Verified=mobile_verified_encoder.transform(train.Mobile_Verified)\n",
    "pickle.dump(mobile_verified_encoder, open(\"mobile_verified_encoder.pkl\", 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#类别特征转换成数值属性\n",
    "Var1=train['Var1'].fillna(\"unknown\")\n",
    "Var1_encoder=labelEncoder.fit(Var1)\n",
    "train.Var1=Var1_encoder.transform(Var1)\n",
    "unknown=Var1_encoder.transform(['unknown'])[0]\n",
    "train.Var1=train['Var1'].replace(unknown,np.NaN)\n",
    "pickle.dump(Var1_encoder, open(\"Var1_encoder.pkl\", 'wb'))\n",
    "\n",
    "print((train['Var1'] == unknown).sum())\n",
    "np.isnan(train['Var1']).any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "#去掉非法字符\n",
    "train.EMI_Loan_Submitted=pd.to_numeric(train['EMI_Loan_Submitted'].replace('N',np.NaN))\n",
    "train.Disbursed=pd.to_numeric(train['Disbursed'].fillna(0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "#类别特征转换成数值属性\n",
    "Var5_encoder=labelEncoder.fit(train.Var5)\n",
    "train.Var5=Var5_encoder.transform(train.Var5)\n",
    "pickle.dump(Var5_encoder, open(\"Var5_encoder.pkl\", 'wb'))\n",
    "\n",
    "Filled_Form_encoder=labelEncoder.fit(train.Filled_Form)\n",
    "train.Filled_Form=Filled_Form_encoder.transform(train.Filled_Form)\n",
    "pickle.dump(Filled_Form_encoder, open(\"Filled_Form_encoder.pkl\", 'wb'))\n",
    "\n",
    "Device_Type_encoder=labelEncoder.fit(train.Device_Type)\n",
    "train.Device_Type=Device_Type_encoder.transform(train.Device_Type)\n",
    "pickle.dump(Device_Type_encoder, open(\"Device_Type_encoder.pkl\", 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "#类别特征转换成数值属性\n",
    "Var2_encoder=labelEncoder.fit(train.Var2)\n",
    "train.Var2=Var2_encoder.transform(train.Var2)\n",
    "pickle.dump(Var2_encoder, open(\"Var2_encoder.pkl\", 'wb'))\n",
    "\n",
    "Var4_encoder=labelEncoder.fit(train.Var4)\n",
    "train.Var4=Var4_encoder.transform(train.Var4)\n",
    "pickle.dump(Var4_encoder, open(\"Var4_encoder.pkl\", 'wb'))\n",
    "\n",
    "Source_encoder=labelEncoder.fit(train.Source)\n",
    "train.Source=Source_encoder.transform(train.Source)\n",
    "pickle.dump(Source_encoder, open(\"Source_encoder.pkl\", 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 87020 entries, 0 to 87019\n",
      "Data columns (total 28 columns):\n",
      "ID                       87020 non-null object\n",
      "Gender                   87020 non-null int64\n",
      "City                     86017 non-null float64\n",
      "Monthly_Income           87020 non-null int64\n",
      "DOB                      87020 non-null object\n",
      "Lead_Creation_Date       87020 non-null object\n",
      "Loan_Amount_Applied      86949 non-null float64\n",
      "Loan_Tenure_Applied      86949 non-null float64\n",
      "Existing_EMI             86949 non-null float64\n",
      "Employer_Name            86949 non-null float64\n",
      "Salary_Account           75256 non-null float64\n",
      "Mobile_Verified          87020 non-null int64\n",
      "Var5                     87020 non-null int64\n",
      "Var1                     87019 non-null float64\n",
      "Loan_Amount_Submitted    52407 non-null float64\n",
      "Loan_Tenure_Submitted    52407 non-null float64\n",
      "Interest_Rate            27726 non-null float64\n",
      "Processing_Fee           27420 non-null float64\n",
      "EMI_Loan_Submitted       27726 non-null float64\n",
      "Filled_Form              87020 non-null int64\n",
      "Device_Type              87020 non-null int64\n",
      "Var2                     87020 non-null int64\n",
      "Source                   87020 non-null int64\n",
      "Var4                     87020 non-null int64\n",
      "LoggedIn                 87020 non-null int64\n",
      "Disbursed                87020 non-null int64\n",
      "Employer_Name_Count      86949 non-null float64\n",
      "age                      87020 non-null int64\n",
      "dtypes: float64(13), int64(12), object(3)\n",
      "memory usage: 18.6+ MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Gender</th>\n",
       "      <th>City</th>\n",
       "      <th>Monthly_Income</th>\n",
       "      <th>Loan_Amount_Applied</th>\n",
       "      <th>Loan_Tenure_Applied</th>\n",
       "      <th>Existing_EMI</th>\n",
       "      <th>Employer_Name</th>\n",
       "      <th>Salary_Account</th>\n",
       "      <th>Mobile_Verified</th>\n",
       "      <th>Var5</th>\n",
       "      <th>...</th>\n",
       "      <th>Processing_Fee</th>\n",
       "      <th>EMI_Loan_Submitted</th>\n",
       "      <th>Filled_Form</th>\n",
       "      <th>Device_Type</th>\n",
       "      <th>Var2</th>\n",
       "      <th>Source</th>\n",
       "      <th>Var4</th>\n",
       "      <th>Disbursed</th>\n",
       "      <th>Employer_Name_Count</th>\n",
       "      <th>age</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>172.0</td>\n",
       "      <td>20000</td>\n",
       "      <td>300000.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8693.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13506</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>446.0</td>\n",
       "      <td>35000</td>\n",
       "      <td>200000.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>38692.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6762.9</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>550.0</td>\n",
       "      <td>10801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>497.0</td>\n",
       "      <td>22500</td>\n",
       "      <td>600000.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1835.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>12274</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>568.0</td>\n",
       "      <td>35000</td>\n",
       "      <td>1000000.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5700.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>17</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>10022</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>87.0</td>\n",
       "      <td>100000</td>\n",
       "      <td>500000.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>25000.0</td>\n",
       "      <td>13515.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>11415</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Gender   City  Monthly_Income  Loan_Amount_Applied  Loan_Tenure_Applied  \\\n",
       "0       0  172.0           20000             300000.0                  5.0   \n",
       "1       1  446.0           35000             200000.0                  2.0   \n",
       "2       1  497.0           22500             600000.0                  4.0   \n",
       "3       1  568.0           35000            1000000.0                  5.0   \n",
       "4       1   87.0          100000             500000.0                  2.0   \n",
       "\n",
       "   Existing_EMI  Employer_Name  Salary_Account  Mobile_Verified  Var5  ...  \\\n",
       "0           0.0         8693.0            20.0                1     0  ...   \n",
       "1           0.0        38692.0            22.0                2     5  ...   \n",
       "2           0.0         1835.0            45.0                2     0  ...   \n",
       "3           0.0         5700.0            45.0                2     2  ...   \n",
       "4       25000.0        13515.0            20.0                2     9  ...   \n",
       "\n",
       "   Processing_Fee  EMI_Loan_Submitted  Filled_Form  Device_Type  Var2  Source  \\\n",
       "0             NaN                 NaN            1            2     6       1   \n",
       "1             NaN              6762.9            1            2     6       1   \n",
       "2             NaN                 NaN            1            2     1      17   \n",
       "3             NaN                 NaN            1            2     1      17   \n",
       "4             NaN                 NaN            1            2     1       9   \n",
       "\n",
       "   Var4  Disbursed  Employer_Name_Count    age  \n",
       "0     1          0                  1.0  13506  \n",
       "1     3          0                550.0  10801  \n",
       "2     1          0                  1.0  12274  \n",
       "3     3          0                  3.0  10022  \n",
       "4     3          0                  4.0  11415  \n",
       "\n",
       "[5 rows x 24 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#保留有效特征\n",
    "train=train.drop(['ID', 'DOB', 'Lead_Creation_Date', 'LoggedIn'], axis=1)\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Gender</th>\n",
       "      <th>City</th>\n",
       "      <th>Monthly_Income</th>\n",
       "      <th>Loan_Amount_Applied</th>\n",
       "      <th>Loan_Tenure_Applied</th>\n",
       "      <th>Existing_EMI</th>\n",
       "      <th>Employer_Name</th>\n",
       "      <th>Salary_Account</th>\n",
       "      <th>Mobile_Verified</th>\n",
       "      <th>Var5</th>\n",
       "      <th>...</th>\n",
       "      <th>Processing_Fee</th>\n",
       "      <th>EMI_Loan_Submitted</th>\n",
       "      <th>Filled_Form</th>\n",
       "      <th>Device_Type</th>\n",
       "      <th>Var2</th>\n",
       "      <th>Source</th>\n",
       "      <th>Var4</th>\n",
       "      <th>Disbursed</th>\n",
       "      <th>Employer_Name_Count</th>\n",
       "      <th>age</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>87020.000000</td>\n",
       "      <td>86017.000000</td>\n",
       "      <td>8.702000e+04</td>\n",
       "      <td>8.694900e+04</td>\n",
       "      <td>86949.000000</td>\n",
       "      <td>8.694900e+04</td>\n",
       "      <td>86949.000000</td>\n",
       "      <td>75256.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>27420.000000</td>\n",
       "      <td>27726.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>86949.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.572834</td>\n",
       "      <td>286.968146</td>\n",
       "      <td>5.884997e+04</td>\n",
       "      <td>2.302507e+05</td>\n",
       "      <td>2.131399</td>\n",
       "      <td>3.696228e+03</td>\n",
       "      <td>20114.162383</td>\n",
       "      <td>24.506830</td>\n",
       "      <td>1.649046</td>\n",
       "      <td>4.922167</td>\n",
       "      <td>...</td>\n",
       "      <td>5131.150839</td>\n",
       "      <td>10999.528377</td>\n",
       "      <td>1.223960</td>\n",
       "      <td>1.739083</td>\n",
       "      <td>3.146116</td>\n",
       "      <td>7.228476</td>\n",
       "      <td>2.949793</td>\n",
       "      <td>0.014629</td>\n",
       "      <td>298.685747</td>\n",
       "      <td>9657.679648</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.494670</td>\n",
       "      <td>179.039492</td>\n",
       "      <td>2.177511e+06</td>\n",
       "      <td>3.542068e+05</td>\n",
       "      <td>2.014193</td>\n",
       "      <td>3.981021e+04</td>\n",
       "      <td>13235.215372</td>\n",
       "      <td>14.602475</td>\n",
       "      <td>0.477295</td>\n",
       "      <td>5.622229</td>\n",
       "      <td>...</td>\n",
       "      <td>4725.837644</td>\n",
       "      <td>7512.323050</td>\n",
       "      <td>0.416926</td>\n",
       "      <td>0.439163</td>\n",
       "      <td>2.304923</td>\n",
       "      <td>7.713886</td>\n",
       "      <td>1.697736</td>\n",
       "      <td>0.120062</td>\n",
       "      <td>1131.459488</td>\n",
       "      <td>6162.401714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>200.000000</td>\n",
       "      <td>1176.410000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-19579.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>134.000000</td>\n",
       "      <td>1.650000e+04</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>8571.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>2000.000000</td>\n",
       "      <td>6491.600000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>9305.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>271.000000</td>\n",
       "      <td>2.500000e+04</td>\n",
       "      <td>1.000000e+05</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>18691.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>4000.000000</td>\n",
       "      <td>9392.970000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>10481.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>446.000000</td>\n",
       "      <td>4.000000e+04</td>\n",
       "      <td>3.000000e+05</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>3.500000e+03</td>\n",
       "      <td>31609.000000</td>\n",
       "      <td>39.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>6250.000000</td>\n",
       "      <td>12919.040000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>11959.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>696.000000</td>\n",
       "      <td>4.445544e+08</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>43566.000000</td>\n",
       "      <td>57.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>50000.000000</td>\n",
       "      <td>144748.280000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>4914.000000</td>\n",
       "      <td>17012.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             Gender          City  Monthly_Income  Loan_Amount_Applied  \\\n",
       "count  87020.000000  86017.000000    8.702000e+04         8.694900e+04   \n",
       "mean       0.572834    286.968146    5.884997e+04         2.302507e+05   \n",
       "std        0.494670    179.039492    2.177511e+06         3.542068e+05   \n",
       "min        0.000000      0.000000    0.000000e+00         0.000000e+00   \n",
       "25%        0.000000    134.000000    1.650000e+04         0.000000e+00   \n",
       "50%        1.000000    271.000000    2.500000e+04         1.000000e+05   \n",
       "75%        1.000000    446.000000    4.000000e+04         3.000000e+05   \n",
       "max        1.000000    696.000000    4.445544e+08         1.000000e+07   \n",
       "\n",
       "       Loan_Tenure_Applied  Existing_EMI  Employer_Name  Salary_Account  \\\n",
       "count         86949.000000  8.694900e+04   86949.000000    75256.000000   \n",
       "mean              2.131399  3.696228e+03   20114.162383       24.506830   \n",
       "std               2.014193  3.981021e+04   13235.215372       14.602475   \n",
       "min               0.000000  0.000000e+00       0.000000        0.000000   \n",
       "25%               0.000000  0.000000e+00    8571.000000       20.000000   \n",
       "50%               2.000000  0.000000e+00   18691.000000       22.000000   \n",
       "75%               4.000000  3.500000e+03   31609.000000       39.000000   \n",
       "max              10.000000  1.000000e+07   43566.000000       57.000000   \n",
       "\n",
       "       Mobile_Verified          Var5  ...  Processing_Fee  EMI_Loan_Submitted  \\\n",
       "count     87020.000000  87020.000000  ...    27420.000000        27726.000000   \n",
       "mean          1.649046      4.922167  ...     5131.150839        10999.528377   \n",
       "std           0.477295      5.622229  ...     4725.837644         7512.323050   \n",
       "min           0.000000      0.000000  ...      200.000000         1176.410000   \n",
       "25%           1.000000      0.000000  ...     2000.000000         6491.600000   \n",
       "50%           2.000000      2.000000  ...     4000.000000         9392.970000   \n",
       "75%           2.000000      9.000000  ...     6250.000000        12919.040000   \n",
       "max           2.000000     19.000000  ...    50000.000000       144748.280000   \n",
       "\n",
       "        Filled_Form   Device_Type          Var2        Source          Var4  \\\n",
       "count  87020.000000  87020.000000  87020.000000  87020.000000  87020.000000   \n",
       "mean       1.223960      1.739083      3.146116      7.228476      2.949793   \n",
       "std        0.416926      0.439163      2.304923      7.713886      1.697736   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        1.000000      1.000000      1.000000      1.000000      1.000000   \n",
       "50%        1.000000      2.000000      2.000000      8.000000      3.000000   \n",
       "75%        1.000000      2.000000      6.000000      8.000000      5.000000   \n",
       "max        2.000000      2.000000      7.000000     30.000000      7.000000   \n",
       "\n",
       "          Disbursed  Employer_Name_Count           age  \n",
       "count  87020.000000         86949.000000  87020.000000  \n",
       "mean       0.014629           298.685747   9657.679648  \n",
       "std        0.120062          1131.459488   6162.401714  \n",
       "min        0.000000             1.000000 -19579.000000  \n",
       "25%        0.000000             1.000000   9305.000000  \n",
       "50%        0.000000             2.000000  10481.000000  \n",
       "75%        0.000000            15.000000  11959.000000  \n",
       "max        1.000000          4914.000000  17012.000000  \n",
       "\n",
       "[8 rows x 24 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可见连续型特征范围很大，需要做标准化处理，LightGBM支持类别型特征输入，不必转成独热编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 对连续型数据缩放\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "\n",
    "# 构造输入特征的标准化器\n",
    "ms_org = MinMaxScaler()\n",
    "\n",
    "#保存特征名字，用于结果保存为csv\n",
    "feat_names_float_data=['Loan_Amount_Applied','Loan_Tenure_Applied','Existing_EMI','Loan_Amount_Submitted','Loan_Tenure_Submitted','Interest_Rate','Processing_Fee','EMI_Loan_Submitted']\n",
    "float_data=train[feat_names_float_data]\n",
    "\n",
    "\n",
    "# 用训练训练模型（得到均值和标准差）：fit\n",
    "mser=ms_org.fit(float_data)\n",
    "# 并对训练数据进行特征缩放：transform\n",
    "float_data = mser.transform(float_data)\n",
    "pickle.dump(mser, open(\"MinMaxScaler.pkl\", 'wb'))\n",
    "\n",
    "\n",
    "# 对连续型数据标准化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 构造输入特征的标准化器\n",
    "ss_org = StandardScaler()\n",
    "\n",
    "feat_names_int_data=['Monthly_Income','age','Employer_Name_Count']\n",
    "int_data=train[feat_names_int_data].astype(np.float64)\n",
    "\n",
    "# 用训练训练模型（得到均值和标准差）：fit\n",
    "sser=ss_org.fit(int_data)\n",
    "# 并对训练数据进行特征缩放：transform\n",
    "int_data = sser.transform(int_data)\n",
    "pickle.dump(sser, open(\"StandardScaler.pkl\", 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Gender</th>\n",
       "      <th>City</th>\n",
       "      <th>Monthly_Income</th>\n",
       "      <th>Loan_Amount_Applied</th>\n",
       "      <th>Loan_Tenure_Applied</th>\n",
       "      <th>Existing_EMI</th>\n",
       "      <th>Employer_Name</th>\n",
       "      <th>Salary_Account</th>\n",
       "      <th>Mobile_Verified</th>\n",
       "      <th>Var5</th>\n",
       "      <th>...</th>\n",
       "      <th>Processing_Fee</th>\n",
       "      <th>EMI_Loan_Submitted</th>\n",
       "      <th>Filled_Form</th>\n",
       "      <th>Device_Type</th>\n",
       "      <th>Var2</th>\n",
       "      <th>Source</th>\n",
       "      <th>Var4</th>\n",
       "      <th>Disbursed</th>\n",
       "      <th>Employer_Name_Count</th>\n",
       "      <th>age</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>87020.000000</td>\n",
       "      <td>86017.000000</td>\n",
       "      <td>8.702000e+04</td>\n",
       "      <td>86949.000000</td>\n",
       "      <td>86949.000000</td>\n",
       "      <td>86949.000000</td>\n",
       "      <td>86949.000000</td>\n",
       "      <td>75256.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>27420.000000</td>\n",
       "      <td>27726.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>87020.000000</td>\n",
       "      <td>8.694900e+04</td>\n",
       "      <td>8.702000e+04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.572834</td>\n",
       "      <td>286.968146</td>\n",
       "      <td>1.224792e-18</td>\n",
       "      <td>0.023025</td>\n",
       "      <td>0.213140</td>\n",
       "      <td>0.000370</td>\n",
       "      <td>20114.162383</td>\n",
       "      <td>24.506830</td>\n",
       "      <td>1.649046</td>\n",
       "      <td>4.922167</td>\n",
       "      <td>...</td>\n",
       "      <td>0.099019</td>\n",
       "      <td>0.068420</td>\n",
       "      <td>1.223960</td>\n",
       "      <td>1.739083</td>\n",
       "      <td>3.146116</td>\n",
       "      <td>7.228476</td>\n",
       "      <td>2.949793</td>\n",
       "      <td>0.014629</td>\n",
       "      <td>-5.230047e-18</td>\n",
       "      <td>-2.776195e-18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.494670</td>\n",
       "      <td>179.039492</td>\n",
       "      <td>1.000006e+00</td>\n",
       "      <td>0.035421</td>\n",
       "      <td>0.201419</td>\n",
       "      <td>0.003981</td>\n",
       "      <td>13235.215372</td>\n",
       "      <td>14.602475</td>\n",
       "      <td>0.477295</td>\n",
       "      <td>5.622229</td>\n",
       "      <td>...</td>\n",
       "      <td>0.094896</td>\n",
       "      <td>0.052324</td>\n",
       "      <td>0.416926</td>\n",
       "      <td>0.439163</td>\n",
       "      <td>2.304923</td>\n",
       "      <td>7.713886</td>\n",
       "      <td>1.697736</td>\n",
       "      <td>0.120062</td>\n",
       "      <td>1.000006e+00</td>\n",
       "      <td>1.000006e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.702641e-02</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.631004e-01</td>\n",
       "      <td>-4.744392e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>134.000000</td>\n",
       "      <td>-1.944891e-02</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>8571.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.036145</td>\n",
       "      <td>0.037021</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.631004e-01</td>\n",
       "      <td>-5.723120e-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>271.000000</td>\n",
       "      <td>-1.554535e-02</td>\n",
       "      <td>0.010000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>18691.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.076305</td>\n",
       "      <td>0.057230</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.622166e-01</td>\n",
       "      <td>1.336046e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>446.000000</td>\n",
       "      <td>-8.656709e-03</td>\n",
       "      <td>0.030000</td>\n",
       "      <td>0.400000</td>\n",
       "      <td>0.000350</td>\n",
       "      <td>31609.000000</td>\n",
       "      <td>39.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.121486</td>\n",
       "      <td>0.081789</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.507269e-01</td>\n",
       "      <td>3.734475e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>696.000000</td>\n",
       "      <td>2.041313e+02</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>43566.000000</td>\n",
       "      <td>57.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>4.079104e+00</td>\n",
       "      <td>1.193425e+00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             Gender          City  Monthly_Income  Loan_Amount_Applied  \\\n",
       "count  87020.000000  86017.000000    8.702000e+04         86949.000000   \n",
       "mean       0.572834    286.968146    1.224792e-18             0.023025   \n",
       "std        0.494670    179.039492    1.000006e+00             0.035421   \n",
       "min        0.000000      0.000000   -2.702641e-02             0.000000   \n",
       "25%        0.000000    134.000000   -1.944891e-02             0.000000   \n",
       "50%        1.000000    271.000000   -1.554535e-02             0.010000   \n",
       "75%        1.000000    446.000000   -8.656709e-03             0.030000   \n",
       "max        1.000000    696.000000    2.041313e+02             1.000000   \n",
       "\n",
       "       Loan_Tenure_Applied  Existing_EMI  Employer_Name  Salary_Account  \\\n",
       "count         86949.000000  86949.000000   86949.000000    75256.000000   \n",
       "mean              0.213140      0.000370   20114.162383       24.506830   \n",
       "std               0.201419      0.003981   13235.215372       14.602475   \n",
       "min               0.000000      0.000000       0.000000        0.000000   \n",
       "25%               0.000000      0.000000    8571.000000       20.000000   \n",
       "50%               0.200000      0.000000   18691.000000       22.000000   \n",
       "75%               0.400000      0.000350   31609.000000       39.000000   \n",
       "max               1.000000      1.000000   43566.000000       57.000000   \n",
       "\n",
       "       Mobile_Verified          Var5  ...  Processing_Fee  EMI_Loan_Submitted  \\\n",
       "count     87020.000000  87020.000000  ...    27420.000000        27726.000000   \n",
       "mean          1.649046      4.922167  ...        0.099019            0.068420   \n",
       "std           0.477295      5.622229  ...        0.094896            0.052324   \n",
       "min           0.000000      0.000000  ...        0.000000            0.000000   \n",
       "25%           1.000000      0.000000  ...        0.036145            0.037021   \n",
       "50%           2.000000      2.000000  ...        0.076305            0.057230   \n",
       "75%           2.000000      9.000000  ...        0.121486            0.081789   \n",
       "max           2.000000     19.000000  ...        1.000000            1.000000   \n",
       "\n",
       "        Filled_Form   Device_Type          Var2        Source          Var4  \\\n",
       "count  87020.000000  87020.000000  87020.000000  87020.000000  87020.000000   \n",
       "mean       1.223960      1.739083      3.146116      7.228476      2.949793   \n",
       "std        0.416926      0.439163      2.304923      7.713886      1.697736   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        1.000000      1.000000      1.000000      1.000000      1.000000   \n",
       "50%        1.000000      2.000000      2.000000      8.000000      3.000000   \n",
       "75%        1.000000      2.000000      6.000000      8.000000      5.000000   \n",
       "max        2.000000      2.000000      7.000000     30.000000      7.000000   \n",
       "\n",
       "          Disbursed  Employer_Name_Count           age  \n",
       "count  87020.000000         8.694900e+04  8.702000e+04  \n",
       "mean       0.014629        -5.230047e-18 -2.776195e-18  \n",
       "std        0.120062         1.000006e+00  1.000006e+00  \n",
       "min        0.000000        -2.631004e-01 -4.744392e+00  \n",
       "25%        0.000000        -2.631004e-01 -5.723120e-02  \n",
       "50%        0.000000        -2.622166e-01  1.336046e-01  \n",
       "75%        0.000000        -2.507269e-01  3.734475e-01  \n",
       "max        1.000000         4.079104e+00  1.193425e+00  \n",
       "\n",
       "[8 rows x 24 columns]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[feat_names_float_data]=float_data\n",
    "train[feat_names_int_data]=int_data\n",
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Gender                   False\n",
       "City                      True\n",
       "Monthly_Income           False\n",
       "Loan_Amount_Applied       True\n",
       "Loan_Tenure_Applied       True\n",
       "Existing_EMI              True\n",
       "Employer_Name             True\n",
       "Salary_Account            True\n",
       "Mobile_Verified          False\n",
       "Var5                     False\n",
       "Var1                      True\n",
       "Loan_Amount_Submitted     True\n",
       "Loan_Tenure_Submitted     True\n",
       "Interest_Rate             True\n",
       "Processing_Fee            True\n",
       "EMI_Loan_Submitted        True\n",
       "Filled_Form              False\n",
       "Device_Type              False\n",
       "Var2                     False\n",
       "Source                   False\n",
       "Var4                     False\n",
       "Disbursed                False\n",
       "Employer_Name_Count       True\n",
       "age                      False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.isnan(train).any()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有缺省值，决策树可以处理缺失值。对于lightgbm，类别型未经独热编码的特征，必须是less than int32的整数,负数将视为缺省特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 87020 entries, 0 to 87019\n",
      "Data columns (total 24 columns):\n",
      "Gender                   87020 non-null int8\n",
      "City                     87020 non-null int16\n",
      "Monthly_Income           87020 non-null float64\n",
      "Loan_Amount_Applied      86949 non-null float64\n",
      "Loan_Tenure_Applied      86949 non-null float64\n",
      "Existing_EMI             86949 non-null float64\n",
      "Employer_Name            87020 non-null int32\n",
      "Salary_Account           87020 non-null int8\n",
      "Mobile_Verified          87020 non-null int8\n",
      "Var5                     87020 non-null int8\n",
      "Var1                     87020 non-null int8\n",
      "Loan_Amount_Submitted    52407 non-null float64\n",
      "Loan_Tenure_Submitted    52407 non-null float64\n",
      "Interest_Rate            27726 non-null float64\n",
      "Processing_Fee           27420 non-null float64\n",
      "EMI_Loan_Submitted       27726 non-null float64\n",
      "Filled_Form              87020 non-null int8\n",
      "Device_Type              87020 non-null int8\n",
      "Var2                     87020 non-null int8\n",
      "Source                   87020 non-null int8\n",
      "Var4                     87020 non-null int8\n",
      "Disbursed                87020 non-null int64\n",
      "Employer_Name_Count      86949 non-null float64\n",
      "age                      87020 non-null float64\n",
      "dtypes: float64(11), int16(1), int32(1), int64(1), int8(10)\n",
      "memory usage: 9.3 MB\n"
     ]
    }
   ],
   "source": [
    "train['Gender']=train['Gender'].astype(np.int8) #类别型特征，必须是less than int32的整数\n",
    "train['City']=train['City'].fillna(-1).astype(np.int16) #负数作为类别型特征将视为缺省特征\n",
    "train['Employer_Name']=train['Employer_Name'].fillna(-1).astype(np.int32) #类别型特征，必须是less than int32的整数,负数将视为缺省特征\n",
    "train['Salary_Account']=train['Salary_Account'].fillna(-1).astype(np.int8)\n",
    "train['Mobile_Verified']=train['Mobile_Verified'].astype(np.int8)\n",
    "train['Var5']=train['Var5'].astype(np.int8)\n",
    "train['Var1']=train['Var1'].fillna(-1).astype(np.int8)\n",
    "train['Filled_Form']=train['Filled_Form'].astype(np.int8)\n",
    "train['Device_Type']=train['Device_Type'].astype(np.int8)\n",
    "train['Var2']=train['Var2'].astype(np.int8)\n",
    "train['Source']=train['Source'].astype(np.int8)\n",
    "train['Var4']=train['Var4'].astype(np.int8)\n",
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Gender                   False\n",
       "City                     False\n",
       "Monthly_Income           False\n",
       "Loan_Amount_Applied       True\n",
       "Loan_Tenure_Applied       True\n",
       "Existing_EMI              True\n",
       "Employer_Name            False\n",
       "Salary_Account           False\n",
       "Mobile_Verified          False\n",
       "Var5                     False\n",
       "Var1                     False\n",
       "Loan_Amount_Submitted     True\n",
       "Loan_Tenure_Submitted     True\n",
       "Interest_Rate             True\n",
       "Processing_Fee            True\n",
       "EMI_Loan_Submitted        True\n",
       "Filled_Form              False\n",
       "Device_Type              False\n",
       "Var2                     False\n",
       "Source                   False\n",
       "Var4                     False\n",
       "Disbursed                False\n",
       "Employer_Name_Count       True\n",
       "age                      False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.isnan(train).any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "#存为csv格式\n",
    "train.to_csv('FE_predict-customer-worth-for-happy-customer-bank.csv',index = False,header=True)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
